/*
在网络中
，私钥的拥有者可以在一段数据被发送之前先对数据进行签名得到一个签名
通过网络把此数据发送给数据接收者之后，
数据的接收者可以通过公钥来对该签名进行验证,
以确保这段数据是私钥的拥有者所发出的原始数据，
且在网络中的传输过程中未被修改。
*/

//sign.jpg

//就是原来的摘要，只是给这个摘要进行了非对称加密

const path = require('path');
const fs = require('fs');
const resolve = filepath => path.join(__dirname, filepath);
const crypto = require('crypto');
const public = fs.readFileSync(resolve('rsa_public.key'));
const private = fs.readFileSync(resolve('rsa_private.key'));

const str = 'qjw2f你好oiwafmncshikikl11!92';

//对签名进行非对称加密
const s = crypto.createSign('RSA-SHA256');
s.update(str); // 一般来说如果是文件 会将文件的ctime+文件大小来作为被签名的源(因为文件太大了)
let r = s.sign(private, 'hex');
console.log(r);

//对签名进行校验
const v = crypto.createVerify('RSA-SHA256');
v.update(str);
console.log(v.verify(public, r, 'hex')); //true
